package sort;

/**
 * @author zxl
 * @version 1.0
 * @date 2021/12/4 18:32
 * 选择排序   先找出最大的值，然后放到最后面  (不稳定)  1 3 10 10 2 5 2
 */
public class SelectionSorting {
    public static void main(String[] args) {
        int[] a = new int[]{1,3,5,2,11,56,32,43,12,54,76,90,31,67,45,76,53,87,21};
        for (int i = 0; i < a.length; i++) {
            //当前最大值的索引
            int munIndex = 0;
            for (int j = 0; j < a.length-i; j++) {
                // 使用<=可提高稳定性   稳定性：当前是把最大的值放在末尾，所以当两个数出现重复时，即可将重复出现且排在最后的数排在后面
                if(a[munIndex] <= a[j]){
                    munIndex = j;
                }
            }
            int temp;
            temp = a[munIndex];
            a[munIndex] = a[a.length-i-1];
            a[a.length-i-1] = temp;
        }
        for (int ib : a) {
            System.out.print(ib + " ");
        }
    }
}
